// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Profitez du meilleur du casino en ligne avec notre code promo Candyspinz exclusif – Jouez maintenant en France! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Profitez du meilleur du casino en ligne avec notre code promo Candyspinz exclusif – Jouez maintenant en France!

Découvrez les joies du casino en ligne avec notre code promo Candyspinz exclusif

Envie de vivre une expérience de casino en ligne inoubliable en France ? Ne cherchez plus, notre code promo Candyspinz exclusif est là pour vous offrir des joies du casino en ligne. Avec notre code, vous aurez accès à une large sélection de jeux de casino en ligne, tels que les machines à sous, la roulette, le blackjack et bien d’autres encore. Vous pourrez également bénéficier de bonus exclusifs et de tours gratuits pour maximiser vos gains. Alors, n’hésitez plus et découvrez les joies du casino en ligne dès maintenant avec notre code promo Candyspinz. Inscrivez-vous dès maintenant et commencez à jouer !

Profitez du meilleur du casino en ligne avec notre code promo Candyspinz exclusif - Jouez maintenant en France!

Jouez et gagnez gros sur les meilleurs jeux de casino en ligne avec notre code promo

Jouez et gagnez gros sur les meilleurs jeux de casino en ligne en France avec notre code promo exclusif. Découvrez une large sélection de jeux, y compris les machines à sous, la roulette, le blackjack et le poker. Inscrivez-vous dès maintenant et réclamez votre bonus de bienvenue pour maximiser vos gains. Ne manquez pas cette occasion de vous amuser et de remporter de gros prix. Code promo disponible pour un temps limité, utilisez-le dès maintenant !

Améliorez votre expérience de jeu en ligne avec notre code promo Candyspinz exclusif

Vous cherchez à améliorer votre expérience de jeu en ligne en France ? Ne cherchez plus, notre code promo Candyspinz exclusif est là pour vous offrir une expérience de jeu inoubliable ! Avec notre code, vous bénéficierez d’avantages exclusifs tels que des bonus de dépôt généreux, des tours gratuits et bien plus encore. Que vous soyez un joueur débutant ou expérimenté, notre code promo Candyspinz est le moyen idéal pour maximiser votre plaisir de jeu en ligne. Alors n’hésitez plus et profitez dès maintenant de notre offre exceptionnelle !
1. Jouez avec style grâce à notre code promo Candyspinz exclusif pour les joueurs français.
2. Profitez de généreux bonus de dépôt pour maximiser votre temps de jeu en ligne.
3. Obtenez des tours gratuits supplémentaires pour augmenter vos chances de gagner gros.
4. Découvrez une large sélection de jeux de casino en ligne passionnants et divertissants.
5. Bénéficiez d’une expérience de jeu en ligne sécurisée et fiable grâce à notre plateforme de confiance.
6. Rejoignez une communauté de joueurs enthousiastes et passionnés en France.
7. Améliorez votre expérience de jeu en ligne avec notre code promo Candyspinz exclusif.
8. Ne manquez pas cette occasion unique de profiter de tous les avantages offerts par notre code promo Candyspinz exclusif pour les joueurs français.

Profitez du meilleur du casino en ligne avec notre code promo Candyspinz exclusif - Jouez maintenant en France!

Code promo Candyspinz : profitez des avantages du casino en ligne en France

Si vous êtes à la recherche d’une expérience de casino en ligne de qualité en France, ne cherchez pas plus loin que Candyspinz. Avec notre code promo exclusif, vous pouvez profiter de tous les avantages du casino en ligne, y compris des bonus généreux et des tours gratuits. Inscrivez-vous dès aujourd’hui et découvrez pourquoi Candyspinz est le choix préféré des joueurs en France.
1. Jouez à vos jeux de casino préférés en ligne avec notre code promo Candyspinz exclusif.
2. Profitez de généreux bonus de bienvenue et de tours gratuits pour maximiser vos gains.
3. Découvrez une large sélection de jeux de qualité, y compris les dernières machines à sous et les jeux de table classiques.
4. Jouez en toute sécurité et en toute confiance sur notre plateforme réglementée et sécurisée.
5. Bénéficiez d’un service clientèle professionnel et réactif, disponible 24h/24 et 7j/7.
6. Profitez de promotions régulières et de tournois passionnants pour encore plus de plaisir de jeu.
7. Rejoignez une communauté active de joueurs en ligne en France et partagez vos expériences de jeu.
8. Inscrivez-vous dès maintenant et découvrez pourquoi Candyspinz est le choix préféré des joueurs en France.

Obtenez des bonus exclusifs avec notre code promo Candyspinz pour le casino en ligne en France

Si vous êtes à la recherche des meilleurs bonus pour les casinos en ligne en France, ne cherchez pas plus loin que notre code promo Candyspinz exclusif! Avec notre code, vous pouvez bénéficier de bonus incroyables qui vous donneront un avantage supplémentaire lors de votre prochaine session de jeu. Que vous soyez un joueur débutant ou expérimenté, nos bonus exclusifs sont sûrs de rendre votre expérience de casino en ligne encore plus agréable.
Ne manquez pas cette occasion de maximiser votre bankroll et d’augmenter vos chances de gagner gros. Obtenez votre code promo Candyspinz dès maintenant et commencez à profiter des avantages incroyables qui vous attendent. Avec notre code promo, vous pouvez être sûr de vivre une expérience de casino en ligne inoubliable en France. Alors qu’attendez-vous? Obtenez votre code promo Candyspinz dès maintenant et commencez à jouer!
N’oubliez pas, avec notre code promo Candyspinz, vous pouvez non seulement bénéficier de bonus exclusifs, mais également accéder à une large sélection de jeux de casino en ligne de haute qualité, des machines à sous aux jeux de table en passant par le vidéo poker. Alors pourquoi attendre? Obtenez votre code promo Candyspinz dès maintenant et découvrez tout ce que les casinos en ligne en France ont à offrir!

“J’ai récemment découvert le casino en ligne Candyspinz grâce à leur code promo exclusif et je dois dire que j’en suis ravi ! Le choix de jeux est incroyable et la qualité des graphismes est tout simplement époustouflante. J’ai déjà gagné plusieurs fois et je compte continuer à jouer encore longtemps. Merci Candyspinz !” – Jean, 35 ans.

“Le casino en ligne Candyspinz est vraiment top ! J’ai utilisé leur code promo exclusif et j’ai pu bénéficier de nombreux avantages. Les jeux sont variés et les gains sont intéressants. Je recommande vivement Candyspinz à tous les amateurs de casino en ligne. Bravo pour votre professionnalisme !” – Sophie, 28 ans.

“Je suis un joueur régulier de casino en ligne et je dois dire que Candyspinz est l’un des meilleurs que j’ai pu essayer. Le choix de jeux est vaste, les graphismes sont de qualité et les gains sont réguliers. J’utilise régulièrement leur code promo exclusif pour bénéficier de bonus supplémentaires. Je suis très satisfait de mon expérience chez Candyspinz.” – Pierre, 42 ans.

“J’ai récemment essayé le casino en ligne Candyspinz en utilisant leur code promo exclusif. Le choix de jeux est assez large et la qualité des graphismes est correcte. J’ai pu gagner quelques euros, mais rien de très exceptionnel. Dans l’ensemble, c’est un casino en ligne correct, sans plus.” – Marc, 30 ans.

Vous vous demandez comment profiter du meilleur du casino en ligne en France ?

Notre code promo Candyspinz exclusif est la réponse !

Il vous donne accès à une expérience de jeu inégalée, avec une large sélection de jeux et des bonus casino candy spinz généreux.

Alors n’hésitez plus, jouez maintenant et découvrez tout ce que le casino en ligne a à offrir !

Design and Develop by Ovatheme